This invention relates to remote execution of computer programs, and, more particularly, to remote execution of computer programs over a network.
Selling computer software for home and business applications is a major market. In the retail market, competition is fierce in getting a program, sometimes called titles, before a consumer to be considered in the purchasing decision. Shelf space for new titles is extremely limited and every title for every publisher simply cannot be displayed. Consequently, software publishers look for other channels that can be used to get titles before consumers.
One of the other channels used by software publishers or manufacturers is direct advertising in computer publications. Another channel is direct marketing to potential consumers of computer software. However, accurate information about the programs is difficult to obtain through these channels. For example, the advertising copy may concentrate on the features provided by the software and, because space is limited, not disclose all the hardware and support software required for executing the advertised program. A review of the program requirements when the user orders the software or views its packaging at a retail outlet may form an impression within the consumer that the manufacturer""s advertising was merely hype. This, in turn, may lead the consumer to view advertising information for all software products with a measure of skepticism.
In an effort to fully inform the potential purchaser about the program being offered, some manufacturers offer demonstration versions of their products. These demonstration versions may contain prepared examples of the capabilities of the offered software or they may contain a fully operational version with a time deactivation feature. The time deactivation feature permits the program to execute for only a limited time following its installation. In this manner, the consumer is able to test all of the features of the software, the ease in which the consumer can use the software, and the compatibility of the output of the software with other application programs which the consumer uses on their system. To disable the time deactivation feature, the consumer must purchase the software to obtain the commands for disabling the time deactivation feature or to receive a copy of the software without the time deactivation feature.
While demonstration software more fully informs consumers about the capability and user friendliness of the software, it does suffer from an important limitationxe2x80x94timelines. Many consumers are more likely to make a purchasing decision favorable to the seller if they are presented the product when the consumer""s interest is active. If the demonstration version of the program is shipped on a diskette, the consumer may be busy when it arrives and simply never attempt to install the demonstration version for evaluation. Additionally, the consumer may have become aware of another software product or forthcoming development which the consumer thinks better addresses the consumer""s need. Thus, the opportunity to favorably impress a consumer may have evaporated by the time the demonstration software has been placed in the hands of the consumer.
To make software available more quickly, some manufacturers have made their demonstration software available through downloading facilities. To obtain a copy of the software, the consumer""s computer system communicates with the download facility so that a copy of the program may be transferred through a modem and over a telephone line to a modem associated with the consumer""s system. While this approach reduces the time between the consumer""s request for the software and its delivery, it still requires the consumer to contact the download facility for a copy of the program in response to advertising in a publication. Since the consumer""s computer may not be accessible at the time that the publication is read, the consumer""s interest may wane before she uses her computer system again.
A promising environment which appears to address many of the timing problems for the marketing of software is the Internet. The Internet is a publicly available network of computer networks that spans, not only the United States, but many parts of the world as well. To access the information on the Internet, a user uses a computer coupled to the Internet through an Internet server. These servers include programs which support the physical, data link, network and transport layers necessary for communication among the servers on the Internet. In this way, computers on a network associated with one server may communicate with a computer associated with another server and the messages between the computers may be relayed by intervening servers.
The importance of the Internet as a commercial marketplace was enhanced by the development of the Hypertext Transport Protocol (HTTP). This protocol is implemented with the Hypertext Markup Language (HTML). By using HTTP, documents written in HTML containing images and text may be presented on a server coupled to the Internet. The presented documents may then be retrieved and their contents graphically displayed. To peruse the HTML documents available through the servers of the Internet, a user""s computer uses an application program called a browser. The browser communicates with servers using HTML and HTTP to request, retrieve, and display HTML documents on a user""s computer. Such browsers may also retrieve a HTML document for storage on a user""s system. Thus, a server on the Internet may present information about a software program in a graphical manner that is as impressive as any print ad and also support a download of the program to the user""s system in response to a user""s request for a demonstration program. Thus, the viewing of the information that raises a user""s interest in a program in contemporaneous with the user""s receipt of the program.
While the Internet, HTTP and HTML provide a commercially viable marketplace for software advertising and product demonstration, there are still limitations that restrain the effectiveness of this type of marketing once the consumer leaves the manufacturer""s server site with the demonstration product. For one, the consumer must still install the demonstration product on the consumer""s computer system. To do this, the consumer must still be knowledgeable about the hardware and software for his computer system to respond to the information prompts generated by the installation program for the demonstration product. This information includes knowledge about system memory, operating system version, monitor display size and video capability. As a result, the consumer may not be able to install the demonstration program properly and the program may abort its execution as a result. Just as unproductive, the consumer may become so frustrated during the installation procedure that he simply postpones the activation of the program and there is no way of ensuring the consumer later activates the program for the demonstration. Even if the consumer installs the program with relative ease, the consumer""s unfamiliarity with the capabilities of the demonstrated program may lead the user to improperly evaluate the program. All of these possibilities negatively impact the likelihood that a consumer will make a decision to purchase the software.
One way to overcome the limitations still present in the Internet environment is to provide the user with access to the application program without requiring the user to execute the program in her own computer system. Allowing a user to remotely control an application on another computer coupled through a network is known in the software support and maintenance environment. Such remote control permits a technician located at a customer service site to execute the application program on a customer""s computer from a remote location to try and duplicate the problem the customer is experiencing or to examine certain parameters in the program to ascertain resource problems which may be causing the customer""s problems. Normally, the remote access to the customer""s computer is through a modem and telephone line. That is, the communication is from one point, the service site, to the other point, the customer""s computer. Other remote control programs may control an application executing on another computer over a network. One example of a protocol which supports such remote control over a network is the X protocol. In this type of control, communication between the controlling and controlled computers is not necessarily point to point.
Remote control programs, both network and point-to-point which are currently known, require a component of the remote control program to be resident on both computers. That is, the components necessary to support remote control must be installed on both computers prior to any attempt to control one of the computers remotely. Installation of the program to support remote control requires a consumer knowledgeable about her system parameters or a technician of the service company who possesses the requisite knowledge. The system parameters and local resources include the input/output (I/O) components of the system which, along with the corresponding support software, form the user interface to the computer system. These resources include a mouse, keyboard, monitor and communication ports.
What is needed is a remote control program that does not require pre-installation in order to operate.
What is needed is a way to provide potential customers with on-demand access to an application program without requiring the user to download and install the program on the user""s system.
What is needed is a way to use the Internet or other network to transparently provide demonstration software.
The limitations of previously known systems have been overcome by a system and method performed in accordance with the principles of the present invention. The system includes an application interception module (AIM) for converting between a first input/output (I/O) stream protocol used by an application program and a first remote control protocol, the I/O stream protocol being used to interface the application program to local resources on a first computer; and a remote display module for converting between the first remote control protocol and a second I/O stream protocol said second I/O stream protocol for communicating with local resources for a second computer through a user interface, the remote display module being transported from the first computer to the second computer for execution by the second computer upon receipt whereby a user at the second computer may establish on-demand remote control of the application program on the first computer to provide input to and view output from the application program at the first computer.
The method of the present invention includes the steps of transporting a remote display module from a first computer to a second computer, executing the remote display module at the second computer to establish communication between a user interface to computer resources at the second computer and the first computer through the remote display module, and launching an application program and application interception module interface at the first computer to establish communication between the application interception module and the remote display module whereby input/output (I/O) messages are communicated between the application program and the user interface at the second computer.
Preferably, a remote control service publisher (RCSP) server, which is preferably a HTTP server displaying HTML documents, provides information about the application programs available for use and demonstration. The HTML documents retrieved from the RCSP contain tags which may be used by a user at the second computer to send a request for an application program to the RCSP. Browsers, which are well known, are used by the second computer to view HTML documents from the RSCP. In response to an activation request by a user, the RCSP server sends a file containing the executable code for a remote display module (RDM) to the browser. Preferably, the browser includes an interpreter which executes the RDM. This execution opens an application window for the remote display module and the remote display module communicates with the local resource interface in the user""s computer. The RDM then sends a request for activation of the requested application program to a remote application server (RAS). The RAS launches the requested application program along with an application interception module (AIM) and/or a protocol translation and optimization module (PTOM). The AIM and/or PTOM converts I/O messages in a first I/O stream protocol for the local resource interface of the computer executing the application program to remote control protocol messages in a remote control protocol. The remote display module being executed by the browser converts the remote control protocol messages it receives from the AIM and/or PTOM to I/O messages in the second I/O protocol for delivery to the local resource interface at the user""s computer and converts the user""s input captured from the local resource interface in the user""s computer to remote control protocol messages in the remote control protocol. These remote control protocol messages are transmitted to the RAS for delivery to the AIM and/or PTOM for conversion to the first I/O protocol.
The application interception module (AIM) monitors the system calls made by the application program to the local resource interface of the first computer. The local resource interface directs the output of the application program to local resources, such as a video display card or sound card, so the program communicates with a user. The AIM intercepts the system calls of the application program to the local resource interface and provides the application program with data from the local resource interface of a remote computer. The data from the remote local resource interface is from input devices such as a mouse or keyboard and is contained within remote control protocol messages. The RAS may also activate a protocol translation and optimization module (PTOM). The PTOM is used to encapsulate messages from AIM in a known remote control protocol within a remote control protocol used for the remote control protocol messages.
Most preferably, the PTOM is used to reduce the latency in the communication time associated with networks. Most Internet users couple to the Internet through a telephone twisted pair line. The bandwidth for this type of communication conduit is relatively narrow. To reduce response times, the PTOM has an associated cache memory in which data about the system in which the RDM is executing are stored. The PTOM parses system calls received from the AIM to determine whether the call is requesting information stored in the cache memory. If the information is stored in the cache memory, the information is retrieved and returned to the application. In this way, the time associated with the transmission of the system call to and the receipt of the response from the RDM is avoided.
Preferably, the RDM of the present invention is implemented in an interpretative language such as the JAVA language. JAVA capable browsers include an interpreter for JAVA language instructions. Thus, an RDM implemented in the JAVA language may be executed by the interpreter in these JAVA capable browsers. When a JAVA capable browser is used, the RDM may be identified in an applet tag of a HTML document. In response to activation of the applet tag, the RCSP may retrieve the identified file containing the executable code for the RDM and transfer the file to the JAVA capable browser. The interpreter in the browser may then execute the transported RDM. Because the RDM is identified as an application program for the user""s computer, it is provided with its own communication access to the local resource interface for the user""s computer. The RDM may remain active to present output from the application program at the RAS to the RDM at the user""s computer and to generate remote control protocol messages corresponding to the user""s input actions for transmission to the AIM or PTOM at the RAS. When the demonstration is concluded, the RDM at the user""s computer terminates along with its access path to the local resource interface. Likewise, the RAS terminates the application program along with any corresponding AIM and PTOM. This preferred implementation does not require RDMs specifically designed for each possible operating system environment. Instead, the RDM obtains sufficient information from the browser and its communication path to the local resource interface to operate in the user""s computer without pre-installation.
Translation of system calls for one type of operating system to another type may be performed by the AIM or PTOM. Alternatively, the system and method of the present invention may maintain a library of RDMs, each of which is designed for a specific operating system environment. In response to a request for a program demonstration, the RCSP selects the file containing the executable code for the RDM for the operating system environment that corresponds to the parameters identified in the request for the program activation received from the user""s computer. The file for the RDM is transmitted and executed in the user""s computer. The execution of the embedded program results in a communication path to the local resource interface being generated for the RDM. The RDM then interprets the messages generated by the AIM or PTOM at the RAS to provide the user access and control of the application program. This alternative implementation does not require pre-installation, but does require more operating system parameter information to correctly select an RDM to transport to the user""s computer.
The system and method of the present invention provides a network user with access and control over an application program so that the user may experience the look and feel of the program as well as try the features of the program. The user need not install any software or directly supply any information about the user""s computer system to the server through which application access is possible. Instead, the interface to the application program is transparent to the user and only requires the execution of a RDM on the user""s machine. The RDM may be provided and used by the user""s computer through the user""s browser or through the embedding of a program segment in the user""s computer using an HTML document.